package com.ydj.framework.utils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

import java.lang.reflect.Type;
import java.util.List;

/**
 * JSON 工具类
 *
 * @author Max
 */
@Slf4j
public class JsonUtils {
	@Getter
	private static final Gson gson;

	static {
		gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
	}

	public static List<Long> jsonToLongList(String json) {
		return gson.fromJson(json, new TypeToken<List<Long>>() {}.getType());
	}

	public static List<Integer> jsonToIntegerList(String json) {
		return gson.fromJson(json, new TypeToken<List<Integer>>() {}.getType());
	}

	public static List<String> jsonToStringList(String json) {
		return gson.fromJson(json, new TypeToken<List<String>>() {}.getType());
	}

	@SuppressWarnings("unchecked")
	public static <T> T jsonToBean(String json, Class clazz) {
		return (T) gson.fromJson(json, clazz);
	}

	public static <T> String listToJson(List<T> list) {
		return gson.toJson(list);
	}

	public static String toJson(Object obj) {
		return gson.toJson(obj);
	}

}